{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ndarray与Python元整list运算对比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import random\n",
    "# import time\n",
    "# import numpy as np\n",
    "\n",
    "\n",
    "# # 准备数据\n",
    "# a = list()\n",
    "# for i in range(100000000):\n",
    "#     a.append(random.random())  # 追加0-1之间的随机数\n",
    "    \n",
    "# # 通过%time方法查看代码执行的时间\n",
    "# # Python原生方法计算列表中数值的总和\n",
    "# %time sum1 = sum(a)\n",
    "\n",
    "# # 将Python原生列表转换为ndarray,然后用numpy计算库计算\n",
    "# b = np.array(a)\n",
    "# %time sum2 = np.sum(b)\n",
    "\n",
    "# \"\"\"\n",
    "# Python原生存储列表是链式存储，Numpy底层是用C语言写的，内部解除了GIL（全局解释器锁），ndarray的存储是线性存储，\n",
    "# 线性存储的遍历效率比练市存储高，Numpy默认是并行计算，当电脑为多核时，可以充分利用这些资源\n",
    "# \"\"\"\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# N维数组--ndarray"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "\n",
    "# 创建ndarray\n",
    "# 一维数组\n",
    "a = np.array([1, 2, 3], dtype=np.float32)  \n",
    "# 二维数组\n",
    "b = np.array([[1, 2, 3,], [4, 5, 6]])\n",
    "# 三维数组\n",
    "c = np.array([[[1, 2, 3], [2, 3, 4]], [[5, 6, 7], [6, 7, 8]]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1. 2. 3.]\n"
     ]
    }
   ],
   "source": [
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[1 2 3]\n",
      " [4 5 6]]\n"
     ]
    }
   ],
   "source": [
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[1 2 3]\n",
      "  [2 3 4]]\n",
      "\n",
      " [[5 6 7]\n",
      "  [6 7 8]]]\n"
     ]
    }
   ],
   "source": [
    "print(c)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ndarray.shape：数组维度的元祖"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3,)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2, 3)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2, 2, 3)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "## ndarray.ndim：数组的维度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b.ndim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c.ndim"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ndarray.size：数组中元素的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a.size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b.size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c.size"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ndarray.itemsize：数组中一个元素的长度（字节）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a.itemsize  # 4个字节<==>32位"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b.itemsize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c.itemsize"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ndarry.dtype：数组元素类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int32')"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int32')"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int32')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "c.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "numpy.dtype"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(c.dtype)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 创建数组时指定元素类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "d = np.array([1.0, 2.0])  # 如果不指定，则默认整数位int32，小数位float64"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('float64')"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "e = np.array([1, 2, 3], dtype=np.int64)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int64')"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e.dtype  # int64"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "f = np.array(['c', 'c++', 'java', 'c#', 'python'], dtype=np.string_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('S6')"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f.dtype  # dtype('S6')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([b'c', b'c++', b'java', b'c#', b'python'], dtype='|S6')"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "f  # array([b'c', b'c++', b'java', b'c#', b'python'], dtype='|S6')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 基本操作"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 生成指定维度的元素为1或0的数组：ndarray.ones(shape, dtype), ndarray.zeros(shape, dtype), ndarray.ones_like(ndarray, dtype), ndarray.zeros_like(ndarray, dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import numpy as np\n",
    "\n",
    "# 生成指定维度的元素为1的数组\n",
    "array_one = np.ones([2, 2])  # 不指定类型，默认为float64"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 1.],\n",
       "       [1., 1.]])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "array_one"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('float64')"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "array_one.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成指定为度的元素为0的数组\n",
    "array_zero = np.zeros([3,2], dtype=np.int32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 0],\n",
       "       [0, 0],\n",
       "       [0, 0]])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "array_zero"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('int32')"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "array_zero.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成维度类似于array_zero数组的元素为1的数组：\n",
    "array_like_one = np.ones_like(array_zero)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 1],\n",
       "       [1, 1],\n",
       "       [1, 1]])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "array_like_one"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成维度类似于array_one数组的元素为0的数组\n",
    "array_like_zero = np.zeros_like(array_one)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0.],\n",
       "       [0., 0.]])"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "array_like_zero"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 从现有数组生成新的数组，ndarray.array(object, dtype), ndarray.asarray(ndarray, dtype)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import numpy as np\n",
    "\n",
    "\n",
    "exist_array = np.array([[1, 2, 3], [2, 3, 4]])\n",
    "new1_array = np.array(exist_array)  # 深拷贝，相当于另外复制一份文件（硬链接）\n",
    "new2_array = np.asarray(exist_array)  # 浅拷贝，相当于给当前文件创建了一个快捷方式（软连接）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [2, 3, 4]])"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "exist_array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [2, 3, 4]])"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new1_array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [2, 3, 4]])"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new2_array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[100,   2,   3],\n",
       "       [  2,   3,   4]])"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "exist_array[0][0] = 100\n",
    "exist_array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [2, 3, 4]])"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new1_array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[100,   2,   3],\n",
       "       [  2,   3,   4]])"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new2_array"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 生成固定范围的数组：ndarray.linspace(start, end, num, endpoint), ndarray.arange(start, end, step, dtype), ndarray.logspace(start, stop, num)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  0,  10,  20,  30,  40,  50,  60,  70,  80,  90, 100], dtype=int64)"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# import numpy as np\n",
    "\n",
    "\n",
    "# 创建等数量距离的数组, endpoint默认是True，表示是否包括end\n",
    "array1 = np.linspace(0, 100, 11, dtype=np.int64)  # 生成指定数量的数组\n",
    "array1  # array([ 0., 10., 20., 30., 40., 50., 60., 70., 80., 90.])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建公差为10的等差数列，包括start但不包括end\n",
    "array2 = np.arange(0, 100, 10)\n",
    "array2  # array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  1.,  10., 100.])"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建公比为10的指定数量的等比数列，默认num=50\n",
    "array3 = np.logspace(0, 2, 3)\n",
    "array3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 正态分布和均匀分布"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 正态分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x800 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "# 0. 准备数据（准备正态分布的数据）\n",
    "x = np.random.normal(1.7, 1, 100000000)  # 三个参数分别为：均值，标准差， 样本数\n",
    "\n",
    "# 1. 创建画布\n",
    "plt.figure(figsize=(20, 8), dpi=100)\n",
    "\n",
    "# 2. 创建图像\n",
    "plt.hist(x, 1000)  # 绘制直方图，两个参数分别为：绘制的数据，组数，本利相当于1000个组，每组100000个数据\n",
    "\n",
    "# 2.1 创建网格\n",
    "plt.grid(True, linestyle='--', alpha=0.7)\n",
    "\n",
    "# 3. 展示图像\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# x  # array([1.0398377 , 2.06016352, 2.38286219, ..., 3.15993423, 0.653032  ,\n",
    "#       2.31895793])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 均匀分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 2000x800 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "\n",
    "# 0. 准备数据（准备均匀分布的数据）\n",
    "x = np.random.uniform(-1, 1, 100000000)  # 前两个参数对应于区间[-1, 1)，第二个参数是样本数\n",
    "\n",
    "# 1. 绘制画本\n",
    "plt.figure(figsize=(20, 8), dpi=100)\n",
    "\n",
    "# 2. 绘制图像\n",
    "plt.hist(x, 1000)  # 第一个参数是均匀分布的样本，第二个是讲这些样本分为1000组\n",
    "plt.grid(True, linestyle='--', alpha=0.7)\n",
    "\n",
    "# 3. 展示图像\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 切片"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.07432093, -0.93407644,  0.81474113,  0.09050714, -0.00465612],\n",
       "       [ 0.58910987,  0.43544959, -0.4396631 ,  0.95668731, -0.79595023],\n",
       "       [ 0.88701486, -0.27855734, -0.53742118,  0.5627633 , -0.50827316],\n",
       "       [ 0.42737562,  0.05951917, -0.0511323 ,  0.37453042, -0.31235328]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 创建4种股票5天的变化情况\n",
    "# stock_change = np.random.normal(0, 1, (4, 5))\n",
    "stock_change = np.random.uniform(-1, 1, (4, 5))  # 和生成正态分布数据格式一样\n",
    "stock_change"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.88701486, -0.27855734, -0.53742118])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查询第三种股票前三日的涨跌情况\n",
    "stock_change[2, :3]  # 切片a:b:step不包括b但是包括a"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 形状修改"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.07432093, -0.93407644,  0.81474113,  0.09050714, -0.00465612],\n",
       "       [ 0.58910987,  0.43544959, -0.4396631 ,  0.95668731, -0.79595023],\n",
       "       [ 0.88701486, -0.27855734, -0.53742118,  0.5627633 , -0.50827316],\n",
       "       [ 0.42737562,  0.05951917, -0.0511323 ,  0.37453042, -0.31235328]])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ndarray使用第五部分的数组\n",
    "stock_change"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.07432093, -0.93407644,  0.81474113,  0.09050714],\n",
       "       [-0.00465612,  0.58910987,  0.43544959, -0.4396631 ],\n",
       "       [ 0.95668731, -0.79595023,  0.88701486, -0.27855734],\n",
       "       [-0.53742118,  0.5627633 , -0.50827316,  0.42737562],\n",
       "       [ 0.05951917, -0.0511323 ,  0.37453042, -0.31235328]])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ndarray.reshape(shape, order) 第一个参数是转换成n*m型数组\n",
    "stock_change.reshape([5, 4])  # 不进行转职，试讲原来数组元素依次排序，然后按4个为1组重新组合，不更改原有数组类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.07432093, -0.93407644,  0.81474113,  0.09050714, -0.00465612,\n",
       "         0.58910987,  0.43544959, -0.4396631 ,  0.95668731, -0.79595023],\n",
       "       [ 0.88701486, -0.27855734, -0.53742118,  0.5627633 , -0.50827316,\n",
       "         0.42737562,  0.05951917, -0.0511323 ,  0.37453042, -0.31235328]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change.reshape([-1, 10])  # 如果列表中第一个数时-1，那么默认转成[20/second_par, second_par]类型的数组，如果20不能被second_par整除，则报错"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.07432093, -0.93407644,  0.81474113,  0.09050714],\n",
       "       [-0.00465612,  0.58910987,  0.43544959, -0.4396631 ],\n",
       "       [ 0.95668731, -0.79595023,  0.88701486, -0.27855734],\n",
       "       [-0.53742118,  0.5627633 , -0.50827316,  0.42737562],\n",
       "       [ 0.05951917, -0.0511323 ,  0.37453042, -0.31235328]])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ndarry.resize(new_shape)\n",
    "stock_change.resize([5, 4])  # 效果和reshape一样，但是是将原数组进行修改\n",
    "stock_change"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.07432093, -0.00465612,  0.95668731, -0.53742118,  0.05951917],\n",
       "       [-0.93407644,  0.58910987, -0.79595023,  0.5627633 , -0.0511323 ],\n",
       "       [ 0.81474113,  0.43544959,  0.88701486, -0.50827316,  0.37453042],\n",
       "       [ 0.09050714, -0.4396631 , -0.27855734,  0.42737562, -0.31235328]])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ndarry.T 矩阵转置\n",
    "stock_change.T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 类型修改"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 0, 0],\n",
       "       [0, 0, 0, 0],\n",
       "       [0, 0, 0, 0],\n",
       "       [0, 0, 0, 0],\n",
       "       [0, 0, 0, 0]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ndarry.astype(type)\n",
    "stock_change.astype(np.int32)  # 将stock_change的数据转换为int32类型，不修改原数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\virtual_environment\\ai\\lib\\site-packages\\ipykernel_launcher.py:2: DeprecationWarning: tostring() is deprecated. Use tobytes() instead.\n",
      "  \n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "b'\\x00 \\xbcN\\xb2\\x06\\xb3?<\\xc0\\xd8F\\xf4\\xe3\\xed\\xbf\\x10\\xeb\\xbc\\xfb[\\x12\\xea?0\\xfb\\x19\\xc7y+\\xb7?\\x00\\xa2I8K\\x12s\\xbf\\xfa\\xd6T\\xf1\\xfc\\xd9\\xe2?\\x04K\\xd3\\xf1g\\xde\\xdb?\\xf8\\xbf\\x1f\\xb5p#\\xdc\\xbfX\\xb8\\x03\\xb3.\\x9d\\xee?\\xb6Kx\\x9clx\\xe9\\xbf\\xf6bn\\xfclb\\xec?\\x94\\xf9\\xd4)\\xe2\\xd3\\xd1\\xbf\\xcc\\xb7\\x85\\xe9\\x8d2\\xe1\\xbf\\xc0_\\xb4+(\\x02\\xe2?\\x9a\\xc1%\\x12\\xc6C\\xe0\\xbf\\xec\\xc1rH\\x1fZ\\xdb?@L\\xb2\\xceKy\\xae?`\\x135.\\x03.\\xaa\\xbf\\xd8\\x9b\\x05uN\\xf8\\xd7?\\xf8\\xeb\\x14\\x9c\\x98\\xfd\\xd3\\xbf'"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ndarray.tostring()或ndarray.tobytes()将数组中的数据转换为ython字节\n",
    "stock_change.tostring()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\x00 \\xbcN\\xb2\\x06\\xb3?<\\xc0\\xd8F\\xf4\\xe3\\xed\\xbf\\x10\\xeb\\xbc\\xfb[\\x12\\xea?0\\xfb\\x19\\xc7y+\\xb7?\\x00\\xa2I8K\\x12s\\xbf\\xfa\\xd6T\\xf1\\xfc\\xd9\\xe2?\\x04K\\xd3\\xf1g\\xde\\xdb?\\xf8\\xbf\\x1f\\xb5p#\\xdc\\xbfX\\xb8\\x03\\xb3.\\x9d\\xee?\\xb6Kx\\x9clx\\xe9\\xbf\\xf6bn\\xfclb\\xec?\\x94\\xf9\\xd4)\\xe2\\xd3\\xd1\\xbf\\xcc\\xb7\\x85\\xe9\\x8d2\\xe1\\xbf\\xc0_\\xb4+(\\x02\\xe2?\\x9a\\xc1%\\x12\\xc6C\\xe0\\xbf\\xec\\xc1rH\\x1fZ\\xdb?@L\\xb2\\xceKy\\xae?`\\x135.\\x03.\\xaa\\xbf\\xd8\\x9b\\x05uN\\xf8\\xd7?\\xf8\\xeb\\x14\\x9c\\x98\\xfd\\xd3\\xbf'"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stock_change.tobytes()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据去重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[1, 2],\n",
       "        [2, 3]],\n",
       "\n",
       "       [[3, 4],\n",
       "        [5, 6]]])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# np.unique(ndarray)\n",
    "arr = np.array([[[1, 2], [2, 3]], [[3, 4], [5, 6]]])\n",
    "arr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3, 4, 5, 6])"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.unique(arr)  # 无论维度的数组，统统转化为一维数组, 不改变原油数组的维度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[[1, 2],\n",
       "        [2, 3]],\n",
       "\n",
       "       [[3, 4],\n",
       "        [5, 6]]])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arr"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 拓展"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\virtual_environment\\ai\\lib\\site-packages\\ipykernel_launcher.py:1: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([list([1, 2]), list([3])], dtype=object)"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "array_error = np.array([[1, 2], [3]])\n",
    "array_error  # array([list([1, 2]), list([3])], dtype=object)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
